C编程中>>=是什么意思

来源:百度知道 编辑:UC知道 时间:2024/05/09 08:36:04
C编程中>>=是什么意思
能具体点吗,
比如a>>=1能解释下吗

是移位和赋值的复合运算。就等价于a=a>>1
我对>>详细介绍一下,它是移位运算符,但是移位分逻辑移位和算术移位。
在c语言中规定当操作数是有符号数时,该运算是算术移位,相反,是逻辑移位。

比如 unsigned char a=129; i的二进制为:10000001 a>>=1,因为该数是无符号数,所以是整体向右移一位,高位用0填充。 得a=01000000 (即a=64)
char a=129; i的二进制为:10000001 a>>=1,因为该数是有符号数,整体向右移一位,高位保持不变。a=11000000 (即a=-64)

这是一个复合赋值运算符,是右移(位运算符)和赋值运算符的复合.

a>>=1就是a=a>>1;
就是把a的二进制右移1位,得到的值再赋给a.

想想+=是什么意思,a+=1就是很好的例子
一样的

就好象其他逻辑赋值语句一样啊~!
比如:a=10,a>>=2;
结果就是a=10/(2*2),
很简单吧 ?
OK!!!

右移一位(通常是由符号数的位移)

a= 8;
a>>=1;
运算后
a=4

小心>>对于有符号数是会做符号扩展的,也就是a=0xfffe a>>=1 后 为0xffff